package cn.goktech.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/user")
public class UserController {
    @ModelAttribute
    public void testModelArr(){

    }
    /*
     *requestMapping注解的重要属性：
     *1、value:默认属性，用来指定请求路径，只给一个值的时候，可省略value属性名 （重点），
     * 一个方法可以有多个请求路径
     * 此时{请求路径1，请求路径2}，前提是没有其他注解参数
     * 有其他参数，写法value ={请求路径1，请求路径2}
     *
     * */
    @RequestMapping("/hello")
    public String test() {
        return "success";
    }

    @RequestMapping(value = {"/insert", "/insert2"}, method = RequestMethod.GET)
    public String insert() {
        return "success";
    }

    /**
     * method:请求的方式，默认get
     * 1、设定请求参数为post，当请求类型给非指定时，浏览器会出现：
     * 405：方法不允许，Request method 'GET' not supported
     * 2、method可以指定多个请求类型
     */
    @RequestMapping(value = "testMthod", method = {RequestMethod.POST, RequestMethod.GET})
    public String testMehtod() {
        //返回的视图名称，该字符串会被视图解析器解析为：web-inf/success.jsp
        return "success";
    }

    /*
     * params:要求我们请求路径中要包含的参数
     * params:要有指定的参数
     * !params:不能该参数
     * params=value:该参数的值为value
     * params!=value:该参数可以没有，有的话不能为value
     *
     * 如果参数不匹配以上规则的话，浏览器会出现400异常
     * */
    @RequestMapping(value = "testParams", params = "age!=19")
    public String testParams() {
        return "success";
    }

    /**
     * headers属性：表示请求该路径，必须要包含的请求头信息
     *
     *headers = "referer":表示请求该路径时，请求头要包含referer,
     * 请求该路径必须有路径来源，不能够直接在浏览器地址中请求该路径
     */
    @RequestMapping(value = "testHeaders",headers = "referer")
    public String testHeaders() {
        return "success";
    }
}
